Computers are very powerful tools for searching for relevant information among a vast amount of information. Indexes are a common mechanism for efficiently identifying information of interest among a large corpus of information using a computer. A typical index is an organized mapping of keywords to the documents of information from which the keywords were extracted. As an example, an index of the world's publically accessible web pages may map words in the web pages to the subset of the web pages that contain that word.
Between the actual physical index itself (e.g., the index data as stored on one or more computers) and the users of the system, a search system is typically provided as a software cushion or layer. In essence, the search system shields the user from knowing or even caring about underlying index details. Typically, all requests from users for information in the index are processed by the search system. For example, documents relevant to a user's request for information may be identified by the search system using an index, all without user knowledge of the underlying index implementation. In this manner, the search system provides users quick access to relevant information without concern to how the information is indexed. One well known search system for identifying relevant information among the world's publically accessible web pages is the GOOGLE Internet search engine provided by Google Inc. of Mountain View, Calif.
One function of a search system is to answer search queries (or just “queries” for short). A query may be defined as a logical expression including a set of one or more search terms or keywords, and results in the identification of a subset of indexed items. Consider, for instance, the handling of a request for information from an Internet search engine. In operation, this request is typically issued by a client system as one or more Hyper Text Transfer Protocol (“HTTP”) requests for retrieving particular search results from indexes on server computers. For example, a request may be for a list of Internet web pages containing the words “college” and “basketball.” In response to this request, the search system typically returns a web page containing hyperlinks to those Internet web pages considered to be most relevant to the search terms “college” and “basketball.” Internet search engines are well-suited for searching all the world's information that is publically available on the Internet.
With the ever increasing popularity and computing power of portable electronic devices such as mobile phones, however, more and more digital content is accessible by users from within mobile applications that execute on the portable electronic devices. Mobile applications, or colloquially “apps”, are typically downloaded from an Internet “app store” or other Internet application marketplace (e.g., the iOS App Store or Google Play) and installed on the portable electronic devices where they execute and provide dedicated functionality to users. In the last several years, mobile applications have become pervasive and provide a vast array of end-user functionality from gaming to shopping, dining, transportation, social, collaboration, messaging, productivity, and more.
As more and more digital content is made accessible to users by mobile applications at portable electronic devices, a whole new set of challenges face software developers of information retrieval systems: digital content that users would potentially like to search for using a search system may not be available on publically accessible web pages on the Internet where it can be indexed by an Internet search engine. A particular set of challenges involves how to index mobile content so that it is searchable by users. Mobile content includes digital content that is accessible by users at portable electronic devices when using mobile applications on the portable electronic devices.
The software industry, in response, introduced a number of products and technologies to address the need to make mobile content searchable, including on-device indexes. An on-device index is an index stored at a portable electronic device that indexes mobile content. With an on-device index, a mobile application on a device can make mobile content searchable by adding entries to the on-device index, typically via an application programming interface (API) offered by an on-device index manager. The on-device index manager may be another mobile application or a component of an operating system of the device. One example of an existing on-device index and on-device index manager is the iOS Spotlight system available on some Apple® iOS devices.
One particular problem that remains for mobile applications is how to effectively manage what is indexed in an on-device index. On-device index managers may offer only a limited API to mobile applications for managing the index. For example, for security and privacy reasons, since the on-device index may be shared by multiple mobile applications on the device, the on-device index manager API may allow only write operations against the on-device index by the mobile applications. Because of the write-only nature of the API, mobile applications cannot read from the on-device index to determine what mobile content is currently indexed and searchable. This can result in data integrity issues with the on-device index. For example, it may be difficult using existing on-device manager APIs to avoid creating duplicative on-device index entries and to determine what mobile content is currently indexed.
The problem is exacerbated with mobile applications for online content management services that host (store) users' content items on Internet-connected server computers. Users may wish to use an on-device indexing system to search their hosted content items. However, because of power, storage, and processing constraints of portable electronic devices, it may not be feasible or practical to index all of the hosted content items in an on-device index. For example, an on-device indexing system may explicitly cap the number of items that can be indexed in the on-device index by a mobile application, which may be a far lower number than the number of content items a user hosts with an online content management service.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.